import axios from 'axios'
import {
  logout,
  delQueryString
} from './login'
import store from '@/store/index'

// 这里使用单独的axios设置 因为如果用统一一个axios会出现baseurl不同，在拦截器中无限循环请求token的问题
// 允许携带cookie
axios.defaults.withCredentials = true
const server = axios.create({
  baseURL: window.env.tkUrl,
  timeout: 10000
})

// 获取token
/**
 *
 *
 * @export
 * @param {string} clientId
 * @param {string} clientSecret
 * @returns {import('axios').AxiosPromise < any >}
 */
export function requestToken(
  clientId, clientSecret, code
) {
  return server.post(
    window.env.tkUrl +
    '?grant_type=authorization_code&client_id=' +
    clientId +
    '&client_secret=' +
    clientSecret +
    '&code=' +
    code +
    '&redirect_uri=' + delQueryString(window.location.href, 'code')
  )
}

// 如果获取token出错直接登出
function onErrorResponse(error) {
  if (error.response) {
    store.dispatch('LogOut').then(() => {
      // 登出
      logout(location.href)
    })
  } else {

  }
}
// 这里添加错误处理，对未传token，token错误问题做登出处理
server.interceptors.response.use(response => {
  if (response === undefined) return
  return response.data
}, onErrorResponse)
